package utils;

import java.util.Map;
import java.util.function.Supplier;

/**
 * 项目名称：test<br/>
 * *********************************<br/>
 * <p>类名称：MapUtils</p>
 * *********************************<br/>
 * <p>类描述：</p>
 * 创建人：zhouzhihui<br/>
 * 创建时间：2017/3/1 14:50<br/>
 * 修改人：周志辉<br/>
 * 修改时间：2017/3/1 14:50<br/>
 * 修改备注：<br/>
 *
 * @version 1.0<br/>
 */
public class MapUtil<T, U> {
    private MapUtil(){}

    /**
     *
     * 方法名称：absent2PutAndGet
     * 方法描述: 从一个map获取一个指定key保存的元素，如果不存在就根据提供的Supplier获取一个并put到map里<br>
     *
     * @param   map         map
     * @param   k           key
     * @param   supplier    supplier
     * @return  T
     * <p>创建人：周志辉
     * <p>创建时间：2019/11/1 15:37
     */
    public static <T, K> T absent2PutAndGet(Map<K, T> map, K k, Supplier<T> supplier) {
        T t = map.get(k);
        if(t != null) {
            return t;
        }
        t = supplier.get();
        map.put(k, t);
        return t;
    }
}
